import java.nio.ByteBuffer;

public class DeviceInfo {

    private static void buildTime(ByteBuffer buffer){
        buffer.put((byte) 78);
        buffer.put((byte) 12);
        buffer.put((byte) 11);

        buffer.put((byte) 2);
        buffer.put((byte) 45);
        buffer.put((byte) 56);
    }


    public static byte[]  build(){

        ByteBuffer buffer = ByteBuffer.allocate(7+20);


        buildTime(buffer);

        // 整车数据
        buffer.put((byte) 0x01);


        // 启动状态
        buffer.put((byte) 0x01);
        // 停车充电
        buffer.put((byte) 0x01);
        // 纯电
        buffer.put((byte) 0x01);

        // 车速 2
        buffer.putShort((short) 0);
        // 累计里程
        buffer.putInt(2323);
        // 总电亚
        buffer.putShort((short) 800);
        // 总电流
        buffer.putShort((short) 800);

        // SOC
        buffer.put((byte) 100);

        // DC状态
        buffer.put((byte) 0x01);

        // 挡位
        buffer.put((byte) 0x01);

        // 绝缘电阻2
        buffer.putShort((short) 800);
        // 2
        buffer.putShort((short) 0x00);

        return buffer.array();
    }

    public static byte[]  build05Location(){

        ByteBuffer buffer = ByteBuffer.allocate(7+9);


        buildTime(buffer);

        // 位置
        buffer.put((byte) 0x05);
        buffer.put((byte) 0x01);
        // 经纬度
        int n = (int)(116.18*Math.pow(10,5));
        int o = (int)(int)(40.48*Math.pow(10,5));

        buffer.putInt(n);
        buffer.putInt(o);
        return buffer.array();
    }

    public static byte[]  build02moto(){
        int num = 2;

        ByteBuffer buffer = ByteBuffer.allocate(7+1+12*num);


        buildTime(buffer);
        buffer.put((byte) 0x02);

        // 个数
        buffer.put((byte) num);

        // 驱动电机数据
        for (int i = 0; i < num; i++) {
            buffer.put((byte) i);
            buffer.put((byte) 0x01);
            buffer.put((byte) ((10)*(i+1)));

            buffer.putShort((short) 123);
            buffer.putShort((short) 123);

            buffer.put((byte) 213);
            buffer.putShort((short) 1223);
            buffer.putShort((short) 1223);

        }
        return buffer.array();
    }

    public static byte[]  build03(){
        int num = 2;

        ByteBuffer buffer = ByteBuffer.allocate(7+18+num);


        buildTime(buffer);
        buffer.put((byte) 0x03);

        buffer.putShort((short) 123);
        buffer.putShort((short) 123);

        buffer.putShort((short) 123);

        buffer.putShort((short) num);


        buffer.put((byte) 1);
        buffer.put((byte) 2);

        buffer.putShort((short) 23);
        buffer.put((byte) 2);

        buffer.putShort((short) 23);
        buffer.put((byte) 2);

        buffer.putShort((short) 23);
        buffer.put((byte) 2);


        // dc状态
        buffer.put((byte) 1);



        return buffer.array();
    }

    public static byte[]  build04(){
        // 发动机

        ByteBuffer buffer = ByteBuffer.allocate(7+5);


        buildTime(buffer);
        buffer.put((byte) 0x04);

        buffer.put((byte) 0x01);

        buffer.putShort((short) 123);
        buffer.putShort((short) 123);

        return buffer.array();
    }

    public static byte[]  build06(){
        // 极限

        ByteBuffer buffer = ByteBuffer.allocate(7+14);


        buildTime(buffer);
        buffer.put((byte) 0x06);

        buffer.put((byte) 0x01);
        buffer.put((byte) 0x01);
        buffer.putShort((short) 123);

        buffer.put((byte) 0x01);
        buffer.put((byte) 0x01);
        buffer.putShort((short) 123);

        buffer.put((byte) 0x01);
        buffer.put((byte) 0x01);
        buffer.put((byte) 123);

        buffer.put((byte) 0x01);
        buffer.put((byte) 0x01);
        buffer.put((byte) 123);

        return buffer.array();
    }

    public static byte[]  build07(){
        // 极限
        int num = 0;

        ByteBuffer buffer = ByteBuffer.allocate(7+5+num*4+4);


        buildTime(buffer);
        buffer.put((byte) 0x07);

        buffer.put((byte) 1);
        String binaryString = "101010";
        buffer.putInt(Integer.parseInt(binaryString,2));

        buffer.put((byte) num);
        buffer.put((byte) num);
        buffer.put((byte) num);
        buffer.put((byte) num);

        return buffer.array();
    }
}
